<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数组合</title>
</head>
<body>
<!--学会了使用纯函数以及如何把它柯里化之后，我们会很容易写出这样的“包菜式”代码：-->

<!--h(g(f(x)));-->
<!--虽然这也是函数式的代码，但它依然存在某种意义上的“不优雅”。为了解决函数嵌套的问题，我们需要用到“函数组合”：-->
<script>
    //两个函数的组合
//    var compose=function(f,g){
//        return function(x){
//            return f(g(x));
//        }
//    };
    //或者
    var compose=(f,g)=>(x=>f(g(x)));
    var add1=x=>x+1;
    var mul5=x=>x*5;
    compose(mul5,add1)(2);
    //=>15
    console.log(compose(mul5,add1)(2))
</script>
<script>
    var first=arr=>arr[0];
    var reverse=arr=>arr.reverse();
    var last=compose(first,reverse);
    last([1,2,3,4,5]);
    console.log(last([1,2,3,4,5]))
</script>
</body>
</html>